﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Telerik.WinControls;
using LIM.controller;
using LIM.model;
using Telerik.WinControls.UI;

namespace LIM.forms
{
    public partial class radForm_CRM_DanhSachHopDong : Telerik.WinControls.UI.RadForm
    {
        public radForm_CRM_DanhSachHopDong()
        {
            InitializeComponent();
            this.radTreeView_PhanLoaiHopDong.TreeViewElement.AllowAlternatingRowColor = true;
        }
        DanhMucHopDongController controller = new DanhMucHopDongController();
        #region Loại bỏ
        /*
        static DataTable GetTable()
        {
            //
            // Here we create a DataTable with four columns.
            //
            DataTable table = new DataTable();
            table.Columns.Add("Ma", typeof(int));
            table.Columns.Add("KhachHang", typeof(string));
            table.Columns.Add("DiaChi", typeof(string));
            table.Columns.Add("NguoiLienHe", typeof(string));
            table.Columns.Add("GhiChu", typeof(string));
            table.Columns.Add("TinhTrang", typeof(string));
            table.Columns.Add("NgayKy", typeof(string));
            table.Columns.Add("NgayKetThuc", typeof(string));
            table.Columns.Add("NhanVienTao", typeof(string));
            table.Columns.Add("NgayTao", typeof(string));
            table.Columns.Add("FileDinhKem", typeof(string));
            // Here we add five DataRows.
            //

            table.Rows.Add(1, "Công Ty Cổ Phần ABC", "330, Đường 3. 2, Q10, TP.HCM", "Mrs Linh", "", "Còn liên hệ", DateTime.Now, DateTime.Now.AddDays(43), "Nguyễn Văn A", DateTime.Now,"");
            table.Rows.Add(2, "Công Ty TNHH E", "316/1A Trần Hưng Đạo, P. Mỹ Long, TP Long Xuyên- An Giang", "Mr Lan", "", "Còn liên hệ",DateTime.Now, DateTime.Now.AddDays(43), "Nguyễn Văn A", DateTime.Now,"");
            table.Rows.Add(3, "Công Ty TNHH Bảo Việt", "Ấp Trung Tâm - Xã Xuân Lập - Thị Xã Long Khánh - Tỉnh Đồng Nai", "Mr Dung", "", "Còn liên hệ", DateTime.Now, DateTime.Now.AddDays(43), "Nguyễn Văn B", DateTime.Now,"");
            table.Rows.Add(4, "Công Ty Cổ Phần đầu tư và phát triển F", "158 Hạ Long, P.2, Tp.Vũng Tàu, Bà Rịa - Vũng Tàu", "Hoài Việt","", "Còn liên hệ", DateTime.Now, DateTime.Now.AddDays(43), "Nguyễn Văn B", DateTime.Now,"");
            table.Rows.Add(5, "Công ty phần mềm và truyền thông OP", "169 Thùy Vân, P.8, Tp.Vũng Tàu, Bà Rịa - Vũng Tàu", "Lâm Anh", "", "Còn liên hệ", DateTime.Now, DateTime.Now.AddDays(43), "Nguyễn Văn C", DateTime.Now,"");
            return table;
        }
        void BuildTagRadTreeView_PhanLoaiHopDong()
        {
            #region Hợp đồng
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[0].Tag = "Mới tạo";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[0].Nodes[0].Text = DateTime.Now.Year.ToString();
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[0].Nodes[0].Tag = DateTime.Now.Year;
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[0].Nodes[1].Text = "Older";

            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[1].Tag = "Đã ký & đang thực hiện";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[1].Nodes[0].Text = DateTime.Now.Year.ToString();
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[1].Nodes[0].Tag = DateTime.Now.Year;
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[1].Nodes[1].Text = (DateTime.Now.Year - 1).ToString();
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[1].Nodes[1].Tag = (DateTime.Now.Year - 1).ToString();
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[1].Nodes[2].Text = "Older";

            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[2].Tag = "Kết thúc và Đóng";

            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes[3].Tag = "Hủy bỏ";
            #endregion
            #region Phiếu nhận mẫu
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[0].Tag = "Mới tạo";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[1].Tag = "Đã nhận đủ mẫu & đang thực hiện";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[2].Tag = "Đã có kết quả phân tích";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[3].Tag = "Đã trả kết quả cho khách hàng";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[4].Tag = "Hủy bỏ";
            #endregion
        }
        void LoadCountItemRadtreeview_PhanLoaiHopDong()
        {
            #region Hợp đồng
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Text = "Mới tạo (" + controller.LoadHopDong(true, "Mới tạo", false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Nodes[0].Text = radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Nodes[0].Text + " (" + controller.LoadHopDong(false, "Mới tạo", false, int.Parse(radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Nodes[0].Tag.ToString())).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Nodes[1].Text = radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Nodes[1].Text + " (" + controller.LoadHopDong(false, "Mới tạo", true, int.Parse(radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["MoiTao"].Nodes[0].Tag.ToString())).Count.ToString() + ")";

            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Text = "Đã ký & đang thực hiện (" + controller.LoadHopDong(true, "Đã ký & đang thực hiện", false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[0].Text = radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[0].Text + " (" + controller.LoadHopDong(false, "Đã ký & đang thực hiện", false, int.Parse(radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[0].Tag.ToString())).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[1].Text = radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[1].Text + " (" + controller.LoadHopDong(false, "Đã ký & đang thực hiện", false, int.Parse(radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[1].Tag.ToString())).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[2].Text = radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["DaKyDangThucHien"].Nodes[2].Text + " (" + controller.LoadHopDong(false, "Đã ký & đang thực hiện", true, DateTime.Now.Year - 1).Count.ToString() + ")";

            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["KetThucVaDong"].Text = "Kết thúc và Đóng (" + controller.LoadHopDong(true, "Kết thúc và Đóng", false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[0].Nodes["HuyBo"].Text = "Hủy bỏ (" + controller.LoadHopDong(true, "Hủy bỏ", false, 0).Count.ToString() + ")";
            #endregion
            #region Phiếu nhận mẫu
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[0].Text = radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[0].Text + " (" + controller.LoadPhieuNhanMau(true, radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[0].Text , false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[1].Text = radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[1].Text + " (" + controller.LoadPhieuNhanMau(true, radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[1].Text , false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[2].Text = radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[2].Text + " (" + controller.LoadPhieuNhanMau(true, radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[2].Text , false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[3].Text = radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[3].Text + " (" + controller.LoadPhieuNhanMau(true, radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[3].Text , false, 0).Count.ToString() + ")";
            radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[4].Text = radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[4].Text + " (" + controller.LoadPhieuNhanMau(true, radTreeView_PhanLoaiHopDong.Nodes[1].Nodes[4].Text , false, 0).Count.ToString() + ")";
            #endregion
        }
         * */
        #endregion
        private void radForm_CRM_DanhSachBaoGia_Load(object sender, EventArgs e)
        {
            LoadDM_HeThong();
            radGridView_HopDongPhieuNhanMau.DataSource = null;
        }
        private void LoadDM_HeThong()
        {
            radTreeView_PhanLoaiHopDong.Nodes.Clear();
            foreach (tbl_DanhMuc_HeThong item in controller.LoadDataList("TinhTrangHopDong"))
            {
                RadTreeNode node1 = new RadTreeNode(item.TenGoi);
                node1.Tag = item.MaDanhMuc;
                node1.Font = new Font("Segoe UI", 825 / 100, FontStyle.Bold);
                radTreeView_PhanLoaiHopDong.Nodes.Add(LoadDM_Child(item.RowID, node1));
                radTreeView_PhanLoaiHopDong.ExpandAll();
            }
            foreach (tbl_DanhMuc_HeThong item in controller.LoadDataList("TinhTrangPhieuNhanMau"))
            {
                RadTreeNode node1 = new RadTreeNode(item.TenGoi);
                node1.Tag = item.MaDanhMuc;
                node1.Font = new Font("Segoe UI", 825 / 100, FontStyle.Bold);
                radTreeView_PhanLoaiHopDong.Nodes.Add(LoadDM_Child(item.RowID, node1));
                radTreeView_PhanLoaiHopDong.ExpandAll();
            }
            //clearcheck();
        }
        private RadTreeNode LoadDM_Child(int parenID, RadTreeNode trn)
        {
            foreach (tbl_DanhMuc_HeThong itemcon in controller.LoadDataChild(parenID))
            {
                RadTreeNode trcon = new RadTreeNode(itemcon.TenGoi);
                trcon.Tag = itemcon.MaDanhMuc;
                if (trn.Text == "Hợp đồng")
                {
                    trcon.Text = itemcon.TenGoi + " (" + controller.LoadHopDong(true, itemcon.MaDanhMuc, false, 0).Count.ToString() + ")";
                }
                else
                {
                    trcon.Text = itemcon.TenGoi + " (" + controller.LoadPhieuNhanMau(true, itemcon.MaDanhMuc, false, 0).Count.ToString() + ")"; 
                }
                trn.Nodes.Add(trcon);
                if (controller.LoadDataChild(itemcon.RowID).Count > 0)
                {
                    LoadDM_Child(itemcon.RowID, trcon);
                }
                tbl_DanhMuc_HeThong dmht = controller.LoadDataByRowID(itemcon.RowID);
                //if (dmht != null)
                //{
                //    if (dmht.TenGoi != "Hủy bỏ")
                //    {
                //        RadTreeNode trcon1 = new RadTreeNode((DateTime.Now.Year).ToString());
                //        trcon1.Tag = (DateTime.Now.Year).ToString();
                //        trcon.Nodes.Add(trcon1);
                //        RadTreeNode trcon2 = new RadTreeNode((DateTime.Now.Year - 1).ToString());
                //        trcon2.Tag = (DateTime.Now.Year - 1).ToString();
                //        trcon.Nodes.Add(trcon2);
                //        RadTreeNode trcon3 = new RadTreeNode("Older");
                //        trcon3.Tag = (DateTime.Now.Year - 1).ToString();
                //        trcon.Nodes.Add(trcon3);
                //    }

                //}
            }
            
            return trn;
        }
        private void radTreeView_PhanLoaiHopDong_SelectedNodeChanged(object sender, Telerik.WinControls.UI.RadTreeViewEventArgs e)
        {
            LoadSelectedNodeChanged(e);
        }
        void LoadSelectedNodeChanged(Telerik.WinControls.UI.RadTreeViewEventArgs e)
        {
            if (e != null)
            {
                if (e.Node.Level == 0)
                {
                    if (e.Node.Text == "Hợp đồng")
                    {
                        radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadHopDong(null, e.Node.Text, false, 0);
                    }
                    else if (e.Node.Text == "Phiếu nhận mẫu")
                    {
                        radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadPhieuNhanMau(null, e.Node.Text, false, 0);
                    }
                }
                else if (e.Node.Level == 1)
                {
                    if (e.Node.RootNode.Text == "Hợp đồng")
                    {
                        radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadHopDong(true, e.Node.Tag.ToString(), false, 0);
                    }
                    else if (e.Node.RootNode.Text == "Phiếu nhận mẫu")
                    {
                        radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadPhieuNhanMau(true, e.Node.Tag.ToString(), false, 0);
                    }

                }
                else if (e.Node.Level == 2)
                {
                    int RowID=0;
                    if (e.Node.Text.Contains("Older"))
                    { RowID = DateTime.Now.Year; }
                    else
                    {
                         RowID = int.Parse(e.Node.Tag.ToString());
                    }
                    if (e.Node.RootNode.Text == "Hợp đồng")
                    {
                        if (e.Node.Text.Contains("Older"))
                        {
                            radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadHopDong(false, e.Node.Parent.Tag.ToString(), true, RowID);
                        }
                        else
                        {
                            radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadHopDong(false, e.Node.Parent.Tag.ToString(), false, RowID);
                        }
                    }
                    else if (e.Node.RootNode.Text == "Phiếu nhận mẫu")
                    {
                        radGridView_HopDongPhieuNhanMau.DataSource = controller.LoadPhieuNhanMau(false, e.Node.Parent.Tag.ToString(), true, RowID);
                    }
                }
            }
        }

        private void radMenuItem_Refresh_Click(object sender, EventArgs e)
        {
            radForm_CRM_DanhSachBaoGia_Load(sender, e);
        }

        private void radGridView_HopDongPhieuNhanMau_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            if (IsClickedOnRowContent((RadGridView)sender, e.Location))
            {
                int rowID = 0;
                if (this.radGridView_HopDongPhieuNhanMau.CurrentRow.Cells[0].Value.ToString().ToUpper() == "HD")
                {
                    if (int.TryParse(this.radGridView_HopDongPhieuNhanMau.CurrentRow.Cells[1].Value.ToString(), out rowID))
                    {
                        radForm_CRM_HopDong_ChiTiet form = new radForm_CRM_HopDong_ChiTiet(rowID);
                        form.Load += (obj, ev) =>
                            {
                                form.SetControlValues(rowID);
                            };
                        form.MdiParent = this.MdiParent;
                        form.Show();
                    }
                }
                else if (this.radGridView_HopDongPhieuNhanMau.CurrentRow.Cells[0].Value.ToString().ToUpper() == "PNM")
                {                    
                    if (int.TryParse(this.radGridView_HopDongPhieuNhanMau.CurrentRow.Cells[1].Value.ToString(), out rowID))
                    {
                        radForm_CRM_PhieuNhanMau_ChiTiet form = new radForm_CRM_PhieuNhanMau_ChiTiet(rowID);
                        form.MdiParent = this.MdiParent;
                        form.Show();
                    }
                }
            }
        }

        /// <summary>
        /// Detect click on rows
        /// </summary>
        /// <param name="radGridView"></param>
        /// <param name="location"></param>
        /// <returns></returns>
        private bool IsClickedOnRowContent(RadGridView radGridView, Point location)
        {
            int excludeHeight = 0;
            if (radGridView.ShowFilteringRow)
                excludeHeight += radGridView.TableElement.FilterRowHeight;
            if (radGridView.ShowGroupPanel)
                excludeHeight += radGridView.TableElement.GroupHeaderHeight;
            if (radGridView.ShowColumnHeaders)
                excludeHeight += radGridView.TableElement.TableHeaderHeight;
            if (excludeHeight < location.Y)
            {
                return true;
            }

            return false;
        }

    }
}
